package com.zrrd.spring_03_annotation.service.impl;

import com.zrrd.spring_03_annotation.mapper.UserDao;
import com.zrrd.spring_03_annotation.service.UserService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author WanJl
 * @version 1.0
 * @title UserServiceImpl
 * @description
 * @create 2024/10/27
 */
@Service
public class UserServiceImpl implements UserService, InitializingBean , DisposableBean {

    //@Autowired    //默认通过类型实现的自动装配
    //@Qualifier("abc") //通过Bean的名称，从IOC容器里获取Bean，它需要和@Autowired结合使用
    //@Resource 是java提供的，既可以根据类型实现自动装配，也可以根据名称实现自动装配
    //也因为它是java提供，所以不太会受到框架的版本限制。
    @Resource(name = "abc")
    private UserDao userDao;

    //从ioc容器里取值赋值给简单类型：
    //使用@Value注解，可以帮我注入简单类型
    @Value("${myname}")
    private String name;
    @Value("${myage}")
    private int age;

    public UserServiceImpl() {
        System.out.println("我是UserServiceImpl的构造方法....");
    }

    {
        System.out.println("我是UserService的初始化代码块....");
    }
    static {
        System.out.println("我是UserService的静态初始化代码块....");
    }
    @Override
    public void sayHello() {
        System.out.println("姓名："+name+"\t年龄："+age);
        userDao.userDaoMethod();
        System.out.println("我是UserService对象的业务方法....");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("我是UserService对象的销毁方法.....");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("我是UserService对象的初始化完成后执行的方法.....");

    }
}
